//package com.example.userservice.Controller;
//
//import cn.hutool.json.JSONObject;
//import com.alibaba.cloud.commons.lang.StringUtils;
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
//import com.example.common.domain.Result;
//import com.example.common.domain.pojo.User;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.Map;
//
//public class Face {
//
//
//
//    @PostMapping("/login")
//    public Result<Map<String, Object>> faceLogin(@RequestParam("image") MultipartFile image) {
//        try {
//            // 1. 校验文件格式
//            if (!image.getContentType().startsWith("image/")) {
//                return Result.badRequest().body(Collections.singletonMap("msg", "请上传图片"));
//            }
//
//            // 2. 提取上传图片的人脸特征值
//            String uploadFeature = faceAuthService.extractFaceFeature(image.getInputStream());
//
//            // 3. 查询用户预存的特征值（数据库中存储）
//            User user = authService.getUserById("当前用户ID"); // 需从Token或前端获取用户标识
//            String storedFeature = user.getFaceFeature();
//
//            // 4. 调用阿里云人脸比对接口
//            CompareFaceRequest request = new CompareFaceRequest()
//                    .setImageURL1("data:image/jpg;base64," + storedFeature) // 预存特征值（示例格式，实际需按API要求处理）
//                    .setImageURL2("data:image/jpg;base64," + uploadFeature);
//            CompareFaceResponse response = faceAuthService.client().compareFace(request, new RuntimeOptions());
//
//            // 5. 验证相似度（阈值通常设为80+）
//            double similarity = response.getBody().getSimilarity();
//            if (similarity >= 80) {
//                return Result.success();
//            } else {
//                return Result.error("人脸验证不合格");
//            }
//
//        } catch (TeaException e) { // 阿里云API异常
//            return Result.error(e.getMessage());
//        } catch (Exception e) {
//            e.printStackTrace();
//            return Result.error("操作失败："+e.getMessage());
//        }
//    }
//
//
//    @ApiOperation(value = "人脸检测接口")
//    @PostMapping(value = "/check")
//    public Result<User> faceCheck(@RequestBody JSONObject faceJson) {
//        String base64Str = faceJson.getString("img");
//        String url = aliyunOss.uploadFiles(base64Str);
//        if (StringUtils.isBlank(url)) {
//            return Result.error("人脸检测图片失败");
//        }
//        SearchFaceResponse response = aliFaceRecognize.searchFace(groupId, url);
//        if (response==null) {
//            return Result.fail("人脸检测失败");
//        }
//        if (response.getData()==null){
//            return Result.error("未匹配到人脸");
//        }
//        if (CollectionUtils.isEmpty(response.getData().getMatchList())) {
//            return Result.error("未匹配到人脸");
//        }
//        List<SearchFaceResponse.Data.MatchListItem.FaceItemsItem> finals = new ArrayList<>();
//        List<SearchFaceResponse.Data.MatchListItem> matchList = response.getData().getMatchList();
//        for (SearchFaceResponse.Data.MatchListItem matchListItem : matchList) {
//            List<SearchFaceResponse.Data.MatchListItem.FaceItemsItem> items = matchListItem.getFaceItems();
//            for (SearchFaceResponse.Data.MatchListItem.FaceItemsItem item : items) {
//                finals.add(item);
//            }
//        }
//        SearchFaceResponse.Data.MatchListItem.FaceItemsItem maxMaterial = finals.stream().max(Comparator.comparingDouble(SearchFaceResponse.Data.MatchListItem.FaceItemsItem::getScore)).get();
//        if(maxMaterial.getScore()<0.8) {
//            return Result.fail("人脸匹配精度不准确,请重新识别");
//        }
//        User user = userService.findById(maxMaterial.getEntityId());
//        if (user == null) {
//            return Result.fail("未匹配到用户，请开户");
//        }
//        return Result.success(user);
//    }
//
//
//
//
//
//}
